Add gtkprintutils.[hc]
authorMatthias Clasen <mclasen@redhat.com>
Sun, 23 Apr 2006 05:48:04 +0000 (05:48 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 23 Apr 2006 05:48:04 +0000 (05:48 +0000)
2006-04-23  Matthias Clasen  <mclasen@redhat.com>

* gtk/Makefile.am: Add gtkprintutils.[hc]

* gtk/gtkprintutils.[hc]: New files, move the unit conversion
functions here.

* gtk/gtkpagesetupunixdialog.c:
* gtk/gtkprintsettings.c:
* gtk/gtkpagesetup.c:
* gtk/gtkpapersize.c: Replace all static copies of to_mm/from_mm
by the copies in gtkprintutils.c.

* gtk/gtkpagesetup.[hc]: Use g types, add documentation.

ChangeLog
ChangeLog.pre-2-10
gtk/Makefile.am
gtk/gtkpagesetup.c
gtk/gtkpagesetup.h
gtk/gtkpagesetupunixdialog.c
gtk/gtkpapersize.c
gtk/gtkprintsettings.c
gtk/gtkprintutils.c [new file with mode: 0644]
gtk/gtkprintutils.h [new file with mode: 0644]

index 0cd97954a0fc276e94a878bde555b75cda08384e..a088a8a18ffccf125488265dd2c55c36c053d17e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2006-04-23  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/Makefile.am: Add gtkprintutils.[hc]
+
+       * gtk/gtkprintutils.[hc]: New files, move the unit conversion
+       functions here.
+
+       * gtk/gtkpagesetupunixdialog.c: 
+       * gtk/gtkprintsettings.c: 
+       * gtk/gtkpagesetup.c: 
+       * gtk/gtkpapersize.c: Replace all static copies of to_mm/from_mm
+       by the copies in gtkprintutils.c.
+
+       * gtk/gtkpagesetup.[hc]: Use g types, add documentation.
+
        * gtk/gtkprintsettings.c: More documentation
 
 2006-04-22  Tor Lillqvist  <tml@novell.com>
index 0cd97954a0fc276e94a878bde555b75cda08384e..a088a8a18ffccf125488265dd2c55c36c053d17e 100644 (file)
@@ -1,5 +1,18 @@
 2006-04-23  Matthias Clasen  <mclasen@redhat.com>
 
+       * gtk/Makefile.am: Add gtkprintutils.[hc]
+
+       * gtk/gtkprintutils.[hc]: New files, move the unit conversion
+       functions here.
+
+       * gtk/gtkpagesetupunixdialog.c: 
+       * gtk/gtkprintsettings.c: 
+       * gtk/gtkpagesetup.c: 
+       * gtk/gtkpapersize.c: Replace all static copies of to_mm/from_mm
+       by the copies in gtkprintutils.c.
+
+       * gtk/gtkpagesetup.[hc]: Use g types, add documentation.
+
        * gtk/gtkprintsettings.c: More documentation
 
 2006-04-22  Tor Lillqvist  <tml@novell.com>
index 52815b548c99eafcfe4bb3d24f7710fdaccd5e24..d3348ba3cf6f856addeb64dce27b1c13cd7544cf 100644 (file)
@@ -334,6 +334,7 @@ gtk_private_h_sources =             \
        gtkpathbar.h            \
        gtkplugprivate.h        \
        gtkprintoperation-private.h\
+       gtkprintutils.h         \
        gtkrbtree.h             \
        gtkrecentchooserdefault.h \
        gtkrecentchooserprivate.h \
@@ -483,6 +484,7 @@ gtk_c_sources =                 \
        gtkprintcontext.c       \
        gtkprintoperation.c     \
        gtkprintsettings.c      \
+       gtkprintutils.c         \
        gtkprogress.c           \
        gtkprogressbar.c        \
        gtkradioaction.c        \
index 8406a28e8845b9c5a9a95cf0e29825647ca73d94..bf9793a7c1fab5a6f9bfd02d115e1a52f15d2f62 100644 (file)
 #include "config.h"
 
 #include "gtkpagesetup.h"
+#include "gtkprintutils.h"
 #include "gtkalias.h"
 
-#define MM_PER_INCH 25.4
-#define POINTS_PER_INCH 72
 
 typedef struct _GtkPageSetupClass GtkPageSetupClass;
 
@@ -49,44 +48,6 @@ struct _GtkPageSetupClass
 
 G_DEFINE_TYPE (GtkPageSetup, gtk_page_setup, G_TYPE_OBJECT)
 
-static double
-to_mm (double len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len * MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len * (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
-static double
-from_mm (double len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len / MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len / (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
 static void
 gtk_page_setup_finalize (GObject *object)
 {
@@ -115,13 +76,32 @@ gtk_page_setup_class_init (GtkPageSetupClass *class)
 
   gobject_class->finalize = gtk_page_setup_finalize;
 }
-  
+
+/**
+ * gtk_page_setup_new:
+ *
+ * Creates a new #GtkPageSetup. 
+ * 
+ * Return value: a new #GtkPageSetup.
+ *
+ * Since: 2.10
+ */
 GtkPageSetup *
 gtk_page_setup_new (void)
 {
   return g_object_new (GTK_TYPE_PAGE_SETUP, NULL);
 }
 
+/**
+ * gtk_page_setup_copy:
+ * @other: the #GtkPageSetup to copy
+ * 
+ * Copies a #GtkPageSetup.
+ * 
+ * Return value: a copy of @other
+ *
+ * Since: 2.10
+ */
 GtkPageSetup *
 gtk_page_setup_copy (GtkPageSetup *other)
 {
@@ -138,25 +118,65 @@ gtk_page_setup_copy (GtkPageSetup *other)
   return copy;
 }
 
+/**
+ * gtk_page_setup_get_orientation:
+ * @setup: a #GtkPageSetup
+ * 
+ * Gets the page orientation of the #GtkPageSetup.
+ * 
+ * Return value: the page orientation
+ *
+ * Since: 2.10
+ */
 GtkPageOrientation
 gtk_page_setup_get_orientation (GtkPageSetup *setup)
 {
   return setup->orientation;
 }
 
+/**
+ * gtk_page_setup_set_orientation:
+ * @setup: a #GtkPageSetup
+ * @orientation: a #GtkPageOrientation value
+ * 
+ * Sets the page orientation of the #GtkPageSetup.
+ *
+ * Since: 2.10
+ */
 void
-gtk_page_setup_set_orientation (GtkPageSetup *setup,
-                               GtkPageOrientation orientation)
+gtk_page_setup_set_orientation (GtkPageSetup       *setup,
+                               GtkPageOrientation  orientation)
 {
   setup->orientation = orientation;
 }
 
+/**
+ * gtk_page_setup_get_paper_size:
+ * @setup: a #GtkPageSetup
+ * 
+ * Gets the paper size of the #GtkPageSetup.
+ * 
+ * Return value: the paper size
+ *
+ * Since: 2.10
+ */
 GtkPaperSize *
 gtk_page_setup_get_paper_size (GtkPageSetup *setup)
 {
   return setup->paper_size;
 }
 
+/**
+ * gtk_page_setup_set_paper_size:
+ * @setup: a #GtkPageSetup
+ * @size: a #GtkPaperSize 
+ * 
+ * Sets the paper size of the #GtkPageSetup without
+ * changing the margins. See 
+ * gtk_page_setup_set_paper_size_and_default_margins().
+ *
+ * Since: 2.10
+ */
 void
 gtk_page_setup_set_paper_size (GtkPageSetup *setup,
                               GtkPaperSize *size)
@@ -164,6 +184,16 @@ gtk_page_setup_set_paper_size (GtkPageSetup *setup,
   setup->paper_size = gtk_paper_size_copy (size);
 }
 
+/**
+ * gtk_page_setup_set_paper_size_and_default_margins:
+ * @setup: a #GtkPageSetup
+ * @size: a #GtkPaperSize 
+ * 
+ * Sets the paper size of the #GtkPageSetup and modifies
+ * the margins according to the new paper size.
+ *
+ * Since: 2.10
+ */
 void
 gtk_page_setup_set_paper_size_and_default_margins (GtkPageSetup *setup,
                                                   GtkPaperSize *size)
@@ -175,68 +205,166 @@ gtk_page_setup_set_paper_size_and_default_margins (GtkPageSetup *setup,
   setup->right_margin = gtk_paper_size_get_default_right_margin (setup->paper_size, GTK_UNIT_MM);
 }
 
-double
+/**
+ * gtk_page_setup_get_top_margin:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Gets the top margin in units of @unit.
+ * 
+ * Return value: the top margin
+ *
+ * Since: 2.10
+ */
+gdouble
 gtk_page_setup_get_top_margin (GtkPageSetup *setup,
                               GtkUnit       unit)
 {
-  return from_mm (setup->top_margin, unit);
+  return _gtk_print_convert_from_mm (setup->top_margin, unit);
 }
 
+/**
+ * gtk_page_setup_set_top_margin:
+ * @setup: a #GtkPageSetup
+ * @margin: the new top margin in units of @unit
+ * @unit: the units for @margin
+ * 
+ * Sets the top margin of the #GtkPageSetup.
+ *
+ * Since: 2.10
+ */
 void
 gtk_page_setup_set_top_margin (GtkPageSetup *setup,
-                              double        margin,
+                              gdouble       margin,
                               GtkUnit       unit)
 {
-  setup->top_margin = to_mm (margin, unit);
+  setup->top_margin = _gtk_print_convert_to_mm (margin, unit);
 }
 
-double
+/**
+ * gtk_page_setup_get_bottom_margin:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Gets the bottom margin in units of @unit.
+ * 
+ * Return value: the bottom margin
+ *
+ * Since: 2.10
+ */
+gdouble
 gtk_page_setup_get_bottom_margin (GtkPageSetup *setup,
                                  GtkUnit       unit)
 {
-  return from_mm (setup->bottom_margin, unit);
+  return _gtk_print_convert_from_mm (setup->bottom_margin, unit);
 }
 
+/**
+ * gtk_page_setup_set_bottom_margin:
+ * @setup: a #GtkPageSetup
+ * @margin: the new bottom margin in units of @unit
+ * @unit: the units for @margin
+ * 
+ * Sets the bottom margin of the #GtkPageSetup.
+ *
+ * Since: 2.10
+ */
 void
 gtk_page_setup_set_bottom_margin (GtkPageSetup *setup,
-                                 double        margin,
+                                 gdouble       margin,
                                  GtkUnit       unit)
 {
-  setup->bottom_margin = to_mm (margin, unit);
+  setup->bottom_margin = _gtk_print_convert_to_mm (margin, unit);
 }
 
-double
-gtk_page_setup_get_left_margin (GtkPageSetup    *setup,
-                               GtkUnit          unit)
+/**
+ * gtk_page_setup_get_left_margin:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Gets the left margin in units of @unit.
+ * 
+ * Return value: the left margin
+ *
+ * Since: 2.10
+ */
+gdouble
+gtk_page_setup_get_left_margin (GtkPageSetup *setup,
+                               GtkUnit       unit)
 {
-  return from_mm (setup->left_margin, unit);
+  return _gtk_print_convert_from_mm (setup->left_margin, unit);
 }
 
+/**
+ * gtk_page_setup_set_left_margin:
+ * @setup: a #GtkPageSetup
+ * @margin: the new left margin in units of @unit
+ * @unit: the units for @margin
+ * 
+ * Sets the left margin of the #GtkPageSetup.
+ *
+ * Since: 2.10
+ */
 void
-gtk_page_setup_set_left_margin (GtkPageSetup    *setup,
-                               double           margin,
-                               GtkUnit          unit)
+gtk_page_setup_set_left_margin (GtkPageSetup *setup,
+                               gdouble       margin,
+                               GtkUnit       unit)
 {
-  setup->left_margin = to_mm (margin, unit);
+  setup->left_margin = _gtk_print_convert_to_mm (margin, unit);
 }
 
-double
-gtk_page_setup_get_right_margin (GtkPageSetup    *setup,
-                                GtkUnit          unit)
+/**
+ * gtk_page_setup_get_right_margin:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Gets the right margin in units of @unit.
+ * 
+ * Return value: the right margin
+ *
+ * Since: 2.10
+ */
+gdouble
+gtk_page_setup_get_right_margin (GtkPageSetup *setup,
+                                GtkUnit       unit)
 {
-  return from_mm (setup->right_margin, unit);
+  return _gtk_print_convert_from_mm (setup->right_margin, unit);
 }
 
+/**
+ * gtk_page_setup_set_right_margin:
+ * @setup: a #GtkPageSetup
+ * @margin: the new right margin in units of @unit
+ * @unit: the units for @margin
+ * 
+ * Sets the right margin of the #GtkPageSetup.
+ *
+ * Since: 2.10
+ */
 void
-gtk_page_setup_set_right_margin (GtkPageSetup    *setup,
-                                double           margin,
-                                GtkUnit          unit)
+gtk_page_setup_set_right_margin (GtkPageSetup *setup,
+                                gdouble       margin,
+                                GtkUnit       unit)
 {
-  setup->right_margin = to_mm (margin, unit);
+  setup->right_margin = _gtk_print_convert_to_mm (margin, unit);
 }
 
-/* These take orientation, but not margins into consideration */
-double
+/**
+ * gtk_page_setup_get_paper_width:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Returns the paper width in units of @unit.
+ * 
+ * Note that this function takes orientation, but 
+ * not margins into consideration. 
+ * See gtk_page_setup_get_page_width().
+ *
+ * Return value: the paper width.
+ *
+ * Since: 2.10
+ */
+gdouble
 gtk_page_setup_get_paper_width (GtkPageSetup *setup,
                                GtkUnit       unit)
 {
@@ -247,9 +375,24 @@ gtk_page_setup_get_paper_width (GtkPageSetup *setup,
     return gtk_paper_size_get_height (setup->paper_size, unit);
 }
 
-double
-gtk_page_setup_get_paper_height (GtkPageSetup  *setup,
-                                GtkUnit        unit)
+/**
+ * gtk_page_setup_get_paper_height:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Returns the paper height in units of @unit.
+ * 
+ * Note that this function takes orientation, but 
+ * not margins into consideration.
+ * See gtk_page_setup_get_page_height().
+ *
+ * Return value: the paper height.
+ *
+ * Since: 2.10
+ */
+gdouble
+gtk_page_setup_get_paper_height (GtkPageSetup *setup,
+                                GtkUnit       unit)
 {
   if (setup->orientation == GTK_PAGE_ORIENTATION_PORTRAIT ||
       setup->orientation == GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT)
@@ -258,29 +401,58 @@ gtk_page_setup_get_paper_height (GtkPageSetup  *setup,
     return gtk_paper_size_get_width (setup->paper_size, unit);
 }
 
-/* These take orientation, and margins into consideration */
-double
-gtk_page_setup_get_page_width (GtkPageSetup    *setup,
-                              GtkUnit          unit)
+/**
+ * gtk_page_setup_get_page_width:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Returns the page width in units of @unit.
+ * 
+ * Note that this function takes orientation and
+ * margins into consideration. 
+ * See gtk_page_setup_get_paper_width().
+ *
+ * Return value: the page width.
+ *
+ * Since: 2.10
+ */
+gdouble
+gtk_page_setup_get_page_width (GtkPageSetup *setup,
+                              GtkUnit       unit)
 {
-  double width;
+  gdouble width;
   
   width = gtk_page_setup_get_paper_width (setup, GTK_UNIT_MM);
   width -= setup->left_margin + setup->right_margin;
   
-  return from_mm (width, unit);
+  return _gtk_print_convert_from_mm (width, unit);
 }
 
-double
-gtk_page_setup_get_page_height (GtkPageSetup    *setup,
-                               GtkUnit          unit)
+/**
+ * gtk_page_setup_get_page_height:
+ * @setup: a #GtkPageSetup
+ * @unit: the unit for the return value
+ * 
+ * Returns the page height in units of @unit.
+ * 
+ * Note that this function takes orientation and
+ * margins into consideration. 
+ * See gtk_page_setup_get_paper_height().
+ *
+ * Return value: the page height.
+ *
+ * Since: 2.10
+ */
+gdouble
+gtk_page_setup_get_page_height (GtkPageSetup *setup,
+                               GtkUnit       unit)
 {
-  double height;
+  gdouble height;
   
   height = gtk_page_setup_get_paper_height (setup, GTK_UNIT_MM);
   height -= setup->top_margin + setup->bottom_margin;
   
-  return from_mm (height, unit);
+  return _gtk_print_convert_from_mm (height, unit);
 }
 
 
index db617a2c7698902428217407151380fccd152f96..f52e0bfedae83ee11eef81e64f099c82f46c18e9 100644 (file)
@@ -42,41 +42,41 @@ void               gtk_page_setup_set_orientation   (GtkPageSetup       *setup,
 GtkPaperSize *     gtk_page_setup_get_paper_size    (GtkPageSetup       *setup);
 void               gtk_page_setup_set_paper_size    (GtkPageSetup       *setup,
                                                     GtkPaperSize       *size);
-double             gtk_page_setup_get_top_margin    (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_top_margin    (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
 void               gtk_page_setup_set_top_margin    (GtkPageSetup       *setup,
-                                                    double              margin,
+                                                    gdouble             margin,
                                                     GtkUnit             unit);
-double             gtk_page_setup_get_bottom_margin (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_bottom_margin (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
 void               gtk_page_setup_set_bottom_margin (GtkPageSetup       *setup,
-                                                    double              margin,
+                                                    gdouble             margin,
                                                     GtkUnit             unit);
-double             gtk_page_setup_get_left_margin   (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_left_margin   (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
 void               gtk_page_setup_set_left_margin   (GtkPageSetup       *setup,
-                                                    double              margin,
+                                                    gdouble             margin,
                                                     GtkUnit             unit);
-double             gtk_page_setup_get_right_margin  (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_right_margin  (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
 void               gtk_page_setup_set_right_margin  (GtkPageSetup       *setup,
-                                                    double              margin,
+                                                    gdouble             margin,
                                                     GtkUnit             unit);
 
-void gtk_page_setup_set_paper_size_and_default_margins (GtkPageSetup *setup,
-                                                       GtkPaperSize *size);
+void gtk_page_setup_set_paper_size_and_default_margins (GtkPageSetup    *setup,
+                                                       GtkPaperSize    *size);
 
 /* These take orientation, but not margins into consideration */
-double             gtk_page_setup_get_paper_width   (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_paper_width   (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
-double             gtk_page_setup_get_paper_height  (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_paper_height  (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
 
 
 /* These take orientation, and margins into consideration */
-double             gtk_page_setup_get_page_width    (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_page_width    (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
-double             gtk_page_setup_get_page_height   (GtkPageSetup       *setup,
+gdouble            gtk_page_setup_get_page_height   (GtkPageSetup       *setup,
                                                     GtkUnit             unit);
 
 
index 0815f17a4b360aed3cc3c45ea165fb81cd593d5b..e3743f56e106c692e9b64ff7050e51ff59c8b6a8 100644 (file)
 #include "gtkprintbackend.h"
 #include "gtkprinter-private.h"
 #include "gtkpapersize.h"
+#include "gtkprintutils.h"
 #include "gtkalias.h"
 
 #define CUSTOM_PAPER_FILENAME ".gtk-custom-papers"
 
-#define MM_PER_INCH 25.4
-#define POINTS_PER_INCH 72
-
 
 struct GtkPageSetupUnixDialogPrivate
 {
@@ -128,44 +126,6 @@ static const char * const common_paper_sizes[] = {
   "iso_a3",
 };
 
-static double
-to_mm (double len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len * MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len * (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
-static double
-from_mm (double len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len / MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len / (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
 static GtkUnit
 get_default_user_units (void)
 {
@@ -1376,7 +1336,7 @@ static double
 unit_widget_get (GtkWidget *unit_widget)
 {
   UnitWidget *data = g_object_get_data (G_OBJECT (unit_widget), "unit-data");
-  return to_mm (gtk_spin_button_get_value (GTK_SPIN_BUTTON (data->spin_button)),
+  return _gtk_print_convert_to_mm (gtk_spin_button_get_value (GTK_SPIN_BUTTON (data->spin_button)),
                data->display_unit);
 }
 
@@ -1385,7 +1345,7 @@ unit_widget_set (GtkWidget *unit_widget, double val)
 {
   UnitWidget *data = g_object_get_data (G_OBJECT (unit_widget), "unit-data");
   gtk_spin_button_set_value (GTK_SPIN_BUTTON (data->spin_button),
-                            from_mm (val, data->display_unit));
+                            _gtk_print_convert_from_mm (val, data->display_unit));
 
 }
 
@@ -1639,10 +1599,10 @@ set_margins_from_printer (CustomPaperDialog *data,
   _gtk_printer_get_hard_margins (printer, &top, &bottom, &left, &right);
   
   data->non_user_change = TRUE;
-  unit_widget_set (data->top_widget, to_mm (top, GTK_UNIT_POINTS));
-  unit_widget_set (data->bottom_widget, to_mm (bottom, GTK_UNIT_POINTS));
-  unit_widget_set (data->left_widget, to_mm (left, GTK_UNIT_POINTS));
-  unit_widget_set (data->right_widget, to_mm (right, GTK_UNIT_POINTS));
+  unit_widget_set (data->top_widget, _gtk_print_convert_to_mm (top, GTK_UNIT_POINTS));
+  unit_widget_set (data->bottom_widget, _gtk_print_convert_to_mm (bottom, GTK_UNIT_POINTS));
+  unit_widget_set (data->left_widget, _gtk_print_convert_to_mm (left, GTK_UNIT_POINTS));
+  unit_widget_set (data->right_widget, _gtk_print_convert_to_mm (right, GTK_UNIT_POINTS));
   data->non_user_change = FALSE;
 
   /* Only send one change */
index 7dfeb9019a234a2e62c4c5a0b30e9d3da1605c1c..476bcb656d1df607c27246fb5d342af804128178 100644 (file)
 #endif
 
 #include "gtkpapersize.h"
+#include "gtkprintutils.h"
 #include "gtkalias.h"
 
-#define MM_PER_INCH 25.4
-#define POINTS_PER_INCH 72
-
 #include "paper_names_offsets.c"
 
 struct _GtkPaperSize
@@ -83,47 +81,10 @@ lookup_paper_info (const char *name)
   return NULL;
 }
 
-static double
-to_mm (double len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len * MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len * (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
-static double
-from_mm (double len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len / MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len / (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
 static gboolean
 parse_media_size (const char *size,
-                 double *width_mm, double *height_mm)
+                 gdouble    *width_mm, 
+                 gdouble    *height_mm)
 {
   const char *p;
   char *e;
@@ -162,9 +123,10 @@ parse_media_size (const char *size,
 }
 
 static gboolean
-parse_full_media_size_name (const char *full_name,
-                           char **name,
-                           double *width_mm, double *height_mm)
+parse_full_media_size_name (const char  *full_name,
+                           char       **name,
+                           gdouble     *width_mm, 
+                           gdouble     *height_mm)
 {
   const char *p;
   const char *end_of_name;
@@ -267,8 +229,8 @@ gtk_paper_size_new (const char *name)
 GtkPaperSize *
 gtk_paper_size_new_from_ppd (const char *ppd_name,
                             const char *ppd_display_name,
-                            double width,
-                            double height)
+                            gdouble     width,
+                            gdouble     height)
 {
   char *name;
   const char *lookup_ppd_name;
@@ -339,8 +301,8 @@ gtk_paper_size_new_custom (const char *name,
   size->display_name = g_strdup (display_name);
   size->is_custom = TRUE;
   
-  size->width = to_mm (width, unit);
-  size->height = to_mm (height, unit);
+  size->width = _gtk_print_convert_to_mm (width, unit);
+  size->height = _gtk_print_convert_to_mm (height, unit);
   
   return size;
 }
@@ -418,12 +380,12 @@ gtk_paper_size_get_ppd_name (GtkPaperSize *size)
 double
 gtk_paper_size_get_width (GtkPaperSize *size, GtkUnit unit)
 {
-  return from_mm (size->width, unit);
+  return _gtk_print_convert_from_mm (size->width, unit);
 }
 double
 gtk_paper_size_get_height (GtkPaperSize *size, GtkUnit unit)
 {
-  return from_mm (size->height, unit);
+  return _gtk_print_convert_from_mm (size->height, unit);
 }
 
 gboolean
@@ -439,8 +401,8 @@ gtk_paper_size_set_size (GtkPaperSize *size, double width, double height, GtkUni
   g_return_if_fail (size != NULL);
   g_return_if_fail (size->is_custom);
 
-  size->width = to_mm (width, unit);
-  size->height = to_mm (height, unit);
+  size->width = _gtk_print_convert_to_mm (width, unit);
+  size->height = _gtk_print_convert_to_mm (height, unit);
 }
 
 #define NL_PAPER_GET(x)         \
@@ -507,8 +469,8 @@ gtk_paper_size_get_default_top_margin (GtkPaperSize *size, GtkUnit unit)
 {
   double margin;
 
-  margin = to_mm (0.25, GTK_UNIT_INCH);
-  return from_mm (margin, unit);
+  margin = _gtk_print_convert_to_mm (0.25, GTK_UNIT_INCH);
+  return _gtk_print_convert_from_mm (margin, unit);
 }
 
 double
@@ -517,15 +479,15 @@ gtk_paper_size_get_default_bottom_margin (GtkPaperSize *size, GtkUnit unit)
   double margin;
   const char *name;
 
-  margin = to_mm (0.25, GTK_UNIT_INCH);
+  margin = _gtk_print_convert_to_mm (0.25, GTK_UNIT_INCH);
 
   name = gtk_paper_size_get_name (size);
   if (strcmp (name, "na_letter") == 0 ||
       strcmp (name, "na_legal") == 0 ||
       strcmp (name, "iso_a4") == 0)
-    margin = to_mm (0.56, GTK_UNIT_INCH);
+    margin = _gtk_print_convert_to_mm (0.56, GTK_UNIT_INCH);
   
-  return from_mm (margin, unit);
+  return _gtk_print_convert_from_mm (margin, unit);
 }
 
 double
@@ -533,8 +495,8 @@ gtk_paper_size_get_default_left_margin (GtkPaperSize *size, GtkUnit unit)
 {
   double margin;
 
-  margin = to_mm (0.25, GTK_UNIT_INCH);
-  return from_mm (margin, unit);
+  margin = _gtk_print_convert_to_mm (0.25, GTK_UNIT_INCH);
+  return _gtk_print_convert_from_mm (margin, unit);
 }
 
 double
@@ -542,8 +504,8 @@ gtk_paper_size_get_default_right_margin (GtkPaperSize *size, GtkUnit unit)
 {
   double margin;
 
-  margin = to_mm (0.25, GTK_UNIT_INCH);
-  return from_mm (margin, unit);
+  margin = _gtk_print_convert_to_mm (0.25, GTK_UNIT_INCH);
+  return _gtk_print_convert_from_mm (margin, unit);
 }
 
 
index 3ef6f62b9e6c6f0e211a7561d35bb2774a014512..5bd47202c394afd8cae33194b1cb4de5deedcc24 100644 (file)
 #include <stdlib.h>
 #include <glib/gprintf.h>
 #include "gtkprintsettings.h"
+#include "gtkprintutils.h"
 #include "gtkalias.h"
 
-#define MM_PER_INCH 25.4
-#define POINTS_PER_INCH 72
 
 typedef struct _GtkPrintSettingsClass GtkPrintSettingsClass;
 
@@ -48,44 +47,6 @@ struct _GtkPrintSettingsClass
 
 G_DEFINE_TYPE (GtkPrintSettings, gtk_print_settings, G_TYPE_OBJECT)
 
-static gdouble
-to_mm (gdouble len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len * MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len * (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
-static gdouble
-from_mm (gdouble len, GtkUnit unit)
-{
-  switch (unit)
-    {
-    case GTK_UNIT_MM:
-      return len;
-    case GTK_UNIT_INCH:
-      return len / MM_PER_INCH;
-    default:
-    case GTK_UNIT_PIXEL:
-      g_warning ("Unsupported unit");
-      /* Fall through */
-    case GTK_UNIT_POINTS:
-      return len / (MM_PER_INCH / POINTS_PER_INCH);
-      break;
-    }
-}
-
 static void
 gtk_print_settings_finalize (GObject *object)
 {
@@ -417,7 +378,7 @@ gtk_print_settings_get_length (GtkPrintSettings *settings,
                               GtkUnit           unit)
 {
   gdouble length = gtk_print_settings_get_double (settings, key);
-  return from_mm (length, unit);
+  return _gtk_print_convert_from_mm (length, unit);
 }
 
 /**
@@ -438,7 +399,7 @@ gtk_print_settings_set_length (GtkPrintSettings *settings,
                               GtkUnit           unit)
 {
   gtk_print_settings_set_double (settings, key,
-                                to_mm (length, unit));
+                                _gtk_print_convert_to_mm (length, unit));
 }
 
 /**
diff --git a/gtk/gtkprintutils.c b/gtk/gtkprintutils.c
new file mode 100644 (file)
index 0000000..dced6e8
--- /dev/null
@@ -0,0 +1,62 @@
+/* GTK - The GIMP Toolkit
+ * gtkpapersize.c: Paper Size
+ * Copyright (C) 2006, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+#include "gtkprintutils.h"
+
+gdouble
+_gtk_print_convert_to_mm (gdouble len, 
+                         GtkUnit unit)
+{
+  switch (unit)
+    {
+    case GTK_UNIT_MM:
+      return len;
+    case GTK_UNIT_INCH:
+      return len * MM_PER_INCH;
+    default:
+    case GTK_UNIT_PIXEL:
+      g_warning ("Unsupported unit");
+      /* Fall through */
+    case GTK_UNIT_POINTS:
+      return len * (MM_PER_INCH / POINTS_PER_INCH);
+      break;
+    }
+}
+
+gdouble
+_gtk_print_convert_from_mm (gdouble len, 
+                           GtkUnit unit)
+{
+  switch (unit)
+    {
+    case GTK_UNIT_MM:
+      return len;
+    case GTK_UNIT_INCH:
+      return len / MM_PER_INCH;
+    default:
+    case GTK_UNIT_PIXEL:
+      g_warning ("Unsupported unit");
+      /* Fall through */
+    case GTK_UNIT_POINTS:
+      return len / (MM_PER_INCH / POINTS_PER_INCH);
+      break;
+    }
+}
diff --git a/gtk/gtkprintutils.h b/gtk/gtkprintutils.h
new file mode 100644 (file)
index 0000000..765d1eb
--- /dev/null
@@ -0,0 +1,35 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2006, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GTK_PRINT_UTILS_H__
+#define __GTK_PRINT_UTILS_H__
+
+#include "gtkenums.h"
+
+G_BEGIN_DECLS
+
+#define MM_PER_INCH 25.4
+#define POINTS_PER_INCH 72
+
+gdouble _gtk_print_convert_to_mm   (gdouble len, GtkUnit unit);
+gdouble _gtk_print_convert_from_mm (gdouble len, GtkUnit unit);
+
+G_END_DECLS
+
+#endif /* __GTK_PRINT_UTILS_H__ */